home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1998-02-12 | 12.2 KB | 464 lines | [ TEXT/MPS ]
{ File: InstallerScript.p Contains: xxx put contents here xxx Version: Technology: Installer 4.5 Package: 4.5 Copyright: © 1984-1998 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, use the Apple Bug Reporter stack. Include the file and version information (from above) in the problem description and send to: Internet: apple.bugs@applelink.apple.com AppleLink: APPLE.BUGS } {$IFC UNDEFINED UsingIncludes} {$SETC UsingIncludes := 0} {$ENDC} {$IFC NOT UsingIncludes} UNIT InstallerScript; INTERFACE {$ENDC} {$IFC UNDEFINED __INSTALLERSCRIPT__} {$SETC __INSTALLERSCRIPT__ := 1} {$I+} {$SETC InstallerScriptIncludes := UsingIncludes} {$SETC UsingIncludes := 1} {$IFC UNDEFINED __FILES__} {$I Files.p} {$ENDC} { Types.p } { ConditionalMacros.p } { MixedMode.p } { OSUtils.p } { Memory.p } { Patches.p } { Kernel.p } { Errors.p } { MachineExceptions.p } { Timing.p } { OrderedItems.p } { Finder.p } {$IFC UNDEFINED __MEMORY__} {$I Memory.p} {$ENDC} {$IFC UNDEFINED __MIXEDMODE__} {$I MixedMode.p} {$ENDC} {$IFC UNDEFINED __TYPES__} {$I Types.p} {$ENDC} {$PUSH} {$ALIGN MAC68K} {$LibExport+} CONST kMaxNumOfFunctionParams = 12; TYPE CallBackPBRec = RECORD fSelector: LONGINT; fResult: LONGINT; fParam: ARRAY [0..kMaxNumOfFunctionParams-1] OF LONGINT; END; CallBackPBPtr = ^CallBackPBRec; InstallerCallBackProcPtr = ProcPtr; { FUNCTION InstallerCallBack(theCallBackPB: CallBackPBPtr): LONGINT; } InstallerCallBackUPP = UniversalProcPtr; CONST uppInstallerCallBackProcInfo = $000000F1; { FUNCTION (4 byte param): 4 byte result; } FUNCTION NewInstallerCallBackProc(userRoutine: InstallerCallBackProcPtr): InstallerCallBackUPP; {$IFC NOT GENERATINGCFM } INLINE $2E9F; {$ENDC} FUNCTION CallInstallerCallBackProc(theCallBackPB: CallBackPBPtr; userRoutine: InstallerCallBackUPP): LONGINT; {$IFC NOT GENERATINGCFM} INLINE $205F, $4E90; {$ENDC} {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Rule Function} {} {} { Code Resource Calling Interface:} {} { long YourRuleFunction( RuleFunctionPBPtr );} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} CONST kTRUERuleFunctionResult = 1; kFALSERuleFunctionResult = 0; TYPE RuleFunctionPBRec = RECORD fCallBackProcPtr: InstallerCallBackUPP; fTargetVRefNum: INTEGER; fTargetFolderDirID: LONGINT; fSystemVRefNum: INTEGER; fSystemBlessedDirID: LONGINT; fRefCon: LONGINT; END; RuleFunctionPBPtr = ^RuleFunctionPBRec; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Action Atom Function} {} {} { Code Resource Calling Interface:} {} { long YourActionAtomFunction( ActionAtom2PBPtr );} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} CONST before = 0; after = 1; cleanUpCancel = 2; TYPE InstallationStage = SInt8; CONST kActionAtomResultFatalError = -1; kActionAtomResultContinue = 0; kActionAtomResultCancel = 1; TYPE ActionAtomResult = LONGINT; ActionAtom2PBRec = RECORD fMessageID: InstallationStage; padByte: SInt8; fStaticDataHdl: Handle; fCallBackProcPtr: InstallerCallBackUPP; fTargetVRefNum: INTEGER; fTargetFolderDirID: LONGINT; fSystemVRefNum: INTEGER; fSystemBlessedDirID: LONGINT; fRefCon: LONGINT; fDoingInstall: BOOLEAN; fDidLiveUpdate: BOOLEAN; fInstallerTempDirID: LONGINT; END; ActionAtom2PBPtr = ^ActionAtom2PBRec; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Version Compare Function} {} {} { Code Resource Calling Interface:} {} { long YourComputeVersionFunctionSetupFunction( ComputeVersionPBPtr );} {} { Return the version in BCD format. For example: ver 2.0.1 final release is 0x02018000} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} ComputeVersionPB = RECORD fCallBackProcPtr: InstallerCallBackUPP; END; ComputeVersionPBPtr = ^ComputeVersionPB; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Target Search Function} {} {} { Code Resource Calling Interface:} {} { SearchResult YourTargetSearchFunction( SearchProcedurePBPtr );} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} CONST kFatalSearchError = -1; kSearchSuccessful = 0; kCancelSearchAndInstallation = 1; TYPE SearchResult = SInt8; FoundFileRec = RECORD vRefNum: INTEGER; parID: LONGINT; name: Str63; fReferenceID: INTEGER; END; FoundFileArrayPtr = ^FoundFileRec; FoundFileArrayHdl = ^FoundFileArrayPtr; SearchProcedurePBRec = RECORD fCallBackProcPtr: InstallerCallBackUPP; fTargetVRefNum: INTEGER; fTargetFolderDirID: LONGINT; fSystemVRefNum: INTEGER; fSystemBlessedDirID: LONGINT; fRefCon: LONGINT; fFileSpecType: OSType; fFileSpecCreator: OSType; fFileSpecCrDate: LONGINT; fFileSpecPath: Str255; fFoundFilesArray: FoundFileArrayHdl; END; SearchProcedurePBPtr = ^SearchProcedurePBRec; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Setup Function} {} {} { Code Resource Calling Interface:} {} { long YourSetupFunction( EnvironmentSetupPBPtr );} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} CONST kContinueInstallerSetup = 0; kQuitInstallerNow = -1; TYPE EnvironmentSetupPB = RECORD fCallBackProcPtr: InstallerCallBackUPP; fTargetFSSpec: FSSpec; fSystemVRefNum: INTEGER; END; EnvironmentSetupPBPtr = ^EnvironmentSetupPB; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Atom Extender Function} {} {} { Code Resource Calling Interface:} {} { long YourAtomExtenderFunction( ExtenderPBPtr );} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} CONST kFileAtomDataFork = 0; kFileAtomRsrcFork = 1; kFileAtomRsrcForkFromDataFork = 2; kRsrcAtom = 3; kFontAtom = 4; kActionAtom = 5; TYPE DataType = SInt8; CONST kFatalError = -1; kContinueAsNormal = 0; kCancelInstallation = 1; kCopiedData = 2; TYPE ExtenderResultCode = SInt16; CONST kInitialize = 0; kBeforePart = 1; kAfterPart = 2; kSuccess = 3; kCancel = 4; TYPE ExtenderMessageID = SInt8; EnvironsHeaderRec = RECORD fMessageID: ExtenderMessageID; pad1: SInt8; fStaticDataHdl: Handle; fCallBackProcPtr: InstallerCallBackUPP; fTargetVRefNum: INTEGER; fTargetFolderDirID: LONGINT; fSystemVRefNum: INTEGER; fSystemBlessedDirID: LONGINT; fRefCon: LONGINT; fDataType: DataType; pad2: SInt8; END; CopyHeaderRec = RECORD fSourceFile: FSSpec; fTargetFile: FSSpec; fTotalTargetSize: LONGINT; fTargetPosStart: LONGINT; fTargetPartSize: LONGINT; fSourcePartSize: LONGINT; fInstallerTempDirID: LONGINT; END; BasicCopyRec = RECORD fEnvironmentHeader: EnvironsHeaderRec; fCopyPBHeader: CopyHeaderRec; END; RsrcCopyRec = RECORD fEnvironmentHeader: EnvironsHeaderRec; fCopyPBHeader: CopyHeaderRec; fSourceRsrcType: ResType; fSourceRsrcID: INTEGER; fTargetRsrcType: ResType; fTargetRsrcID: INTEGER; fTargetRsrcName: Str255; fTargetRsrcAttrs: INTEGER; END; FontCopyRec = RECORD fEnvironmentHeader: EnvironsHeaderRec; fCopyPBHeader: CopyHeaderRec; fSourceFontRsrcType: ResType; fSourceFontRsrcID: INTEGER; fTargetFontRsrcType: ResType; { FONT, NFNT, or sfnt} fTargetFontRsrcID: INTEGER; fTargetFontRsrcName: Str255; fTargetFontRsrcAttrs: INTEGER; fFamilyName: Str255; fFamilyID: INTEGER; fFontSize: INTEGER; fFontStyle: INTEGER; END; ExtenderPBRec = RECORD CASE INTEGER OF 0: ( fBasicPBRec: BasicCopyRec; ); 1: ( fFileCopyPBRec: BasicCopyRec; ); 2: ( fRsrcCopyPBRec: RsrcCopyRec; ); 3: ( fFontCopyPBRec: FontCopyRec; ); END; ExtenderPBPtr = ^ExtenderPBRec; {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Callback Glue Routines} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} { Memory Related} FUNCTION INewHandle(pCallBackProcPtr: InstallerCallBackUPP; newHandleSize: LONGINT): Handle; PROCEDURE IDisposHandle(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); PROCEDURE IHLock(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); PROCEDURE IHUnLock(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); { Atom Extender Related} FUNCTION ReadSourceData(pCallBackProcPtr: InstallerCallBackUPP; VAR count: LONGINT; storagePtr: Ptr): OSErr; FUNCTION WriteTargetData(pCallBackProcPtr: InstallerCallBackUPP; count: LONGINT; storagePtr: Ptr): OSErr; FUNCTION ReadTargetData(pCallBackProcPtr: InstallerCallBackUPP; VAR count: LONGINT; storagePtr: Ptr): OSErr; FUNCTION SetTargetDataPos(pCallBackProcPtr: InstallerCallBackUPP; positionMode: INTEGER; positionOffset: LONGINT): OSErr; FUNCTION GetTargetDataPos(pCallBackProcPtr: InstallerCallBackUPP; VAR positionOffset: LONGINT): OSErr; FUNCTION GetTargetDataEOF(pCallBackProcPtr: InstallerCallBackUPP; VAR theLength: LONGINT): OSErr; FUNCTION SetSourceDataPos(pCallBackProcPtr: InstallerCallBackUPP; positionMode: INTEGER; positionOffset: LONGINT): OSErr; FUNCTION GetSourceDataPos(pCallBackProcPtr: InstallerCallBackUPP; VAR positionOffset: LONGINT): OSErr; FUNCTION GetSourceDataEOF(pCallBackProcPtr: InstallerCallBackUPP; VAR theLength: LONGINT): OSErr; { Action Atom Related} FUNCTION MakeFSSpecFromFileSpecID(pCallBackProcPtr: InstallerCallBackUPP; pFileSpecID: INTEGER; VAR pFSSpecPtr: FSSpec; VAR pExtraPathInfo: StringHandle): OSErr; PROCEDURE SuspendWaitCursor(pCallBackProcPtr: InstallerCallBackUPP); PROCEDURE ResumeWaitCursor(pCallBackProcPtr: InstallerCallBackUPP); PROCEDURE IncrementStatusBar(pCallBackProcPtr: InstallerCallBackUPP; pIncrementAmount: INTEGER); FUNCTION IsUserInteractionAllowed(pCallBackProcPtr: InstallerCallBackUPP): BOOLEAN; FUNCTION InstallerFindSpecialFolder(pCallBackProcPtr: InstallerCallBackUPP; pVRefNum: INTEGER; pfolderType: OSType; pCreateFolder: BOOLEAN; VAR pFoundVRefNum: INTEGER; VAR pFoundDirID: LONGINT): OSErr; FUNCTION GetBoxFlagOverwrite(pCallBackProcPtr: InstallerCallBackUPP): LONGINT; FUNCTION IsLaunchedByUpgrader(pCallBackProcPtr: InstallerCallBackUPP): BOOLEAN; FUNCTION IsParasiteScript(pCallBackProcPtr: InstallerCallBackUPP): BOOLEAN; PROCEDURE RegisterScriptAction(pCallBackProcPtr: InstallerCallBackUPP; actionClassID: INTEGER; actionIdentifier: INTEGER; param0: UNIV Ptr; param1: UNIV Ptr; param2: UNIV Ptr; param3: UNIV Ptr; resultPtr: UNIV Ptr); {///////////////////////////////////////////////////////////////////////////////////////////////////} {} { Obsolete Interfaces} {} {///////////////////////////////////////////////////////////////////////////////////////////////////} { Old Action Atom Parameter Block} TYPE AAPBRec = RECORD targetVRefNum: INTEGER; blessedDirID: LONGINT; aaRefCon: LONGINT; doingInstall: BOOLEAN; whichStage: InstallationStage; didLiveUpdate: BOOLEAN; padByte: SInt8; installerTempDirID: LONGINT; END; AAPBRecPtr = ^AAPBRec; { Action Handler Parameter Block} ActionHandlerPB = RECORD fStaticDataHdl: Handle; fCallBackProcPtr: InstallerCallBackUPP; fTargetVRefNum: INTEGER; fTargetFolderDirID: LONGINT; fSystemVRefNum: INTEGER; fSystemBlessedDirID: LONGINT; fActionClassID: INTEGER; fActionIdentifier: INTEGER; fParam0: Ptr; fParam1: Ptr; fParam2: Ptr; fParam3: Ptr; fResultPtr: Ptr; END; ActionHandlerPBPtr = ^ActionHandlerPB; {$ALIGN RESET} {$POP} {$SETC UsingIncludes := InstallerScriptIncludes} {$ENDC} {__INSTALLERSCRIPT__} {$IFC NOT UsingIncludes} END. {$ENDC}